Relazione sul programma ARKANOID di Claudio Bazzan Il programma si compone essenzialmente in due parti. Il codice sorgente scritto in Pascal e compilabile con il TP6.0 (e successivi) della Borland, e la parte grafica sviluppata con un programma per disegnare di pubblico dominio. Il sorgente Pascal e' suddiviso in 3 unit piu' il programma principale di poche righe che ha il solo scopo di chiarmare le procedure di piu' alto livello, vale a dire quelle che controllano la schermata di presentazione e l'inizio della partita. Le unit in questione sono la MOUSE.TPU, la SERVICE.TPU e la SND.TPU. La prima di queste e' stata praticamente importata dall'esterno e adattata alle necessita del gioco. Come dice il nome stesso la unit si occupa della gestione del mouse, strumento indispensabile per il corretto funzionamento del programma; tuttavia MOUSE.TPU svolge anche altri compiti di non secondaria importanza come lo spostamento veloce di blocchi di memoria da un'array all'altro. Sono state incluse in tale unit anche queste procedure in quanto scritte in codice assembler e di provenienza esterna, il tutto a favore di un miglioramento del programma in fase di esecuzione che specie su processori inferiori all'80386 diventa indispensabile. Cio' nonostante su processori piu' lenti possono verificarsi dei disturbi, quali sfarfallamento dell'immagine o rallentamento degli oggetti in movimento: cio' non e' imputabile al programma ma alla velocita' con cui esso viene eseguito poiche' ci sono dei tempi critici entro cui il processore deve terminare determinate procedure. Il problema deriva infatti dal refresh video che sulla scheda VGA (nella modalita' 320x200x256 col.) avviene ad una frequenza di 70Hz; la CPU deve quindi terminare gli spostamenti degli oggetti in 1/70 di secondo. Se cio' non avviene la scheda aggiorna la pagina video prima che sia stata rielaborata la nuova posizione dell'immagine e cio' ne provoca un leggero effetto di sfarfallamento. La unit SND.TPU e' invece responsabile della gestione del suono. Si e' ritenuto opportuno separarla dal resto del programma in modo da consentire facilmente eventuali modifiche e miglioramenti al fine di supportare schede sonore professionali (quali ad esempio la SOUNDBLASTER) e non il semplice cicalino del PC come fa ora. Infine la unit SERVICE.TPU contiene il programma vero e proprio. In tale unit e' contenuta la procedura LOADBTM, responsabile del caricamento della grafica in memoria, anch'essa di provenienza esterna: viene infatti fornita insieme allo stesso programma utilizzato per creare i disegni in modo da poter manipolare quest'ultimi con il Turbo Pascal. Non mi dilungo oltre nello spiegare il funzionamento delle varie procedure e unit in quanto lo stesso codice sorgente e' stato abbondantemente commentato. IMPORTANTE Si e' ritenuto opportuno non inserire nel programma un help in linea, e di rimandare per esso ad una breve documentazione scritta (che segue) al fine di mantenere per quanto possibile la verosimiglianza con lo stesso gioco da bar ARKANOID il quale per ovvie ragioni non consente la consultazione di una pagina d'aiuto che, fra parentesi, in casi come questi non e' indispensabile. Vedere quindi quanto segue per avere informazioni sul gioco. ARKANOID: istruzioni per l'uso. Lo scopo del gioco e' molto semplice: si tratta di pilotare col mouse una piccola piattaforma (il suo nome e' VAUS), e con essa cercare di colpire la pallina al fine di spingerla contro i mattoncini e abbatterli. I mattoncini sono di vari colori, ad ogni colore e' associato un determinato punteggio, quando un mattoncino viene abbattuto il punteggio ad esso associato viene sommato a quello del giocatore. I mattoncini di colore grigio necessitano di due colpi per essere abbattuti mentre quelli di colore beige sono un bersaglio indistruttibile e hanno il solo scopo di ostacolare i movimenti della pallina. Ogni round di gioco (chiamato anche quadro o muro) termina quando tutti i mattoncini (eccetto ovviamente quelli indistruttibili) vengono abbattuti. Il gioco termina invece quando si perdono tutte le vite a disposizione. All'inizio della partita si hanno 5 vite a disposizione (indicate dal vaus in gioco piu' i quattro di riserva in basso a sinistra). Ogni pallina persa comporta la distruzione di un VAUS e quindi la perdita di una vita. Durante il gioco cadono casualmente verso il vaus delle capsule con cui e' possibile guadagnare dei bonus che variano a seconda della lettera contenuta. Per avere il bonus e' necessario raccogliere con il vaus la capsula; attenzione pero' a non lasciare cadere la pallina mentre si fa cio'. Segue una tabella con la descrizione dei vari bonus. Lettera Bonus L Permette si abbattere i mattoncini sparandoci contro. Usare il tasto sinistro del mouse per azionare i laser. E Raddoppia le dimensioni del vaus. S Diminuisce la velocita' con cui si muove la pallina. C Abilita' l'effetto magnete che permette di trattenere per un certo periodo di tempo la pallina sul vaus. Per rilanciare la pallina usare il tasto sinistro del mouse. D Fa schizzare nell'area di gioco altre due palline. B Apre una device di teletrasporto che consente di accedere direttamente al round successivo. Portarsi col vaus all'estrema destra dell'area di gioco. P Regala una vita extra che si somma a quelle disponibili. Non e' possibile usufruire di piu' di un bonus alla volta. In altre parole ogni capsula annulla l'effetto di quella presa in precedenza. A scopo dimostrativo, poiche' il fine di questo programma e' didattico, si e' pensato di attivare alcune procedure che consentono di far cadere a comando le capsule con i bonus, cosa che nel gioco reale non accade. Quindi con le prime 7 lettere dell'alfabeto (a,b,c,d,e,f,g), e' possibile chiamare una qualunque delle 7 capsule. L'opzione a due giocatori consente di giocare a turno una pallina per uno. I punteggi e i progressi dei due giocatori sono comunque tenuti divisi. Cambiano solo i turni di gioco (che vengono di volta in volta segnalati). All'inizio e' possibile scegliere tramite i tasti F1/F2 il livello di gioco che determina l'accelerazione della pallina (che e' sempre e comunque maggiore di zero). Il livello piu' facile e' il livello 1, il piu' difficile e' il livello 5. Il gioco all'inizio viene regolato per default al livello 3. Sempre nella schermata principale e' possibile attivare e disattivare il sonoro del gioco per mezzo della barra spaziatrice. Infine una volta selezionata la partita ad un giocatore (tasto sinistro del mouse) o a due giocatori (tasto destro), viene chiesto di scegliere il muro dal quale vuole iniziare a giocare. Il numero complessivo di muri e' 32, dopodiche' il gioco riparte ciclicamente dal primo. Claudio Bazzan